/*(C) Copyright

    This file is part of widget Meteoclimatic.
    Autor: Antonio Cristóbal Álvarez Abellán -> acabellan@gmail.com
    
    */

package deeloco.android.meteoclimatic.donate;

import java.io.InputStream;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragment;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.text.Html;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
import android.widget.TextView;

public class datosEstacion extends SherlockFragment implements ActionBar.TabListener {

	
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
	{
		// TODO Auto-generated method stub
		String codigoEstacion = (String) getActivity().getIntent().getExtras().get("codigo");
		String nombreEstacion = (String) getActivity().getIntent().getExtras().get("nombre");
		final boolean estado = (boolean) getActivity().getIntent().getExtras().getBoolean("estado");
		String error = (String) getActivity().getIntent().getExtras().get("desEstado");
		
		View myFragment=inflater.inflate(R.layout.datos_estacion, container,false);
		
		estacion miEstacion=new estacion(getActivity(),nombreEstacion,codigoEstacion);
		
		if (!(miEstacion.capturarDatos()))
    	{
			//Error en la captura de los datos
    		Log.d("datosEstacion","Error al capturar datos");
    		TextView cabecera = (TextView) myFragment.findViewById(R.id.tw_cabecera);
    		cabecera.setText("Error captura de datos");
    	}
		else
		{
			//Hora y fecha
			TextView horaFecha = (TextView) myFragment.findViewById(R.id.tw_horaFecha);
			horaFecha.setText(Html.fromHtml(miEstacion.getFechaLocal()));
			//Temperatura
			TextView temp = (TextView) myFragment.findViewById(R.id.temp);
			temp.setText(""+miEstacion.getDatosMeteo().T);
			TextView temp_max = (TextView) myFragment.findViewById(R.id.temp_max);
			temp_max.setText(""+miEstacion.getDatosMeteo().Tmax);
			TextView temp_min = (TextView) myFragment.findViewById(R.id.temp_min);
			temp_min.setText(""+miEstacion.getDatosMeteo().Tmin);
			//Humedad
			TextView hum = (TextView) myFragment.findViewById(R.id.hum);
			hum.setText(""+miEstacion.getDatosMeteo().H);
			TextView hum_max = (TextView) myFragment.findViewById(R.id.hum_max);
			hum_max.setText(""+miEstacion.getDatosMeteo().Hmax);
			TextView hum_min = (TextView) myFragment.findViewById(R.id.hum_min);
			hum_min.setText(""+miEstacion.getDatosMeteo().Hmin);
			//Viento
			TextView viento = (TextView) myFragment.findViewById(R.id.viento);
			viento.setText(miEstacion.getDatosMeteo().getDirViento()+" "+miEstacion.getDatosMeteo().W);
			TextView viento_max = (TextView) myFragment.findViewById(R.id.viento_max);
			viento_max.setText(""+miEstacion.getDatosMeteo().Wmax);
			//Presión
			TextView pre = (TextView) myFragment.findViewById(R.id.pre);
			pre.setText(""+miEstacion.getDatosMeteo().B);
			TextView pre_max = (TextView) myFragment.findViewById(R.id.pre_max);
			pre_max.setText(""+miEstacion.getDatosMeteo().Bmax);
			TextView pre_min = (TextView) myFragment.findViewById(R.id.pre_min);
			pre_min.setText(""+miEstacion.getDatosMeteo().Bmin);
			//Presión
			TextView prec = (TextView) myFragment.findViewById(R.id.prec);
			prec.setText(""+miEstacion.getDatosMeteo().P);			
		}

		if (estado)
		{
			final WebView webView = (WebView) myFragment.findViewById(R.id.webview);
			webView.getSettings().setLoadWithOverviewMode(true);
			webView.getSettings().setUseWideViewPort(true);
			webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
			webView.setScrollContainer(false);
			
			final Activity activity = getActivity();
			final ProgressDialog dialogDatosEstacion = new ProgressDialog(activity);
			dialogDatosEstacion.setCancelable(true);
			dialogDatosEstacion.setTitle("");
			dialogDatosEstacion.setMessage(getString(R.string.cargando_datos));
			dialogDatosEstacion.setCancelable(true);
			dialogDatosEstacion.show();
			dialogDatosEstacion.setOnCancelListener(new OnCancelListener() 
			 {
		            public void onCancel(DialogInterface dialog) 
		            {
		            	webView.clearView();
		            }
		        });

			
			webView.setWebViewClient(new WebViewClient()
			{

				@Override
				public void onPageFinished(WebView view, String url) {
					// TODO Auto-generated method stub
					super.onPageFinished(view, url);
					dialogDatosEstacion.cancel();
				}
				
			});
			
			String html="<html>" +
					"<head>" +
	    		    "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\" />" +
					"</head>" +
					"<body>" +
					"<img src=\""+getString(R.string.urlMeteoclimatic)+"addons/graf24h.php?st="+codigoEstacion+"&id=es"+"\"/>" +
					"</body></head>";
			webView.loadData(html, "text/html; charset=UTF-8", null);
			//webView.loadUrl("http://www.meteoclimatic.com/addons/graf24h.php?st="+codigoEstacion+"&id=es");
		}
		
		

		return myFragment;
	}


	
	public void onTabSelected(Tab tab, FragmentTransaction ft) {
		// TODO Auto-generated method stub
		ft.add(android.R.id.content, this,"Datos Estacion");
        ft.attach(this);
		
	}

	public void onTabUnselected(Tab tab, FragmentTransaction ft) {
		// TODO Auto-generated method stub
		 ft.detach(this);
		
	}

	public void onTabReselected(Tab tab, FragmentTransaction ft) {
		// TODO Auto-generated method stub
		
	}
	
	
	/**
	 * CLASE PRIVADA PARA DESCARGAR UNA IMAGEN DE UNA URL Y METERLA EN UN imageView
	 * @author Antonio
	 *
	 */
	private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
	    ImageView bmImage;

	    public DownloadImageTask(ImageView bmImage) {
	        this.bmImage = bmImage;
	    }

	    protected Bitmap doInBackground(String... urls) {
	        String urldisplay = urls[0];
	        Bitmap mIcon11 = null;
	        try {
	            InputStream in = new java.net.URL(urldisplay).openStream();
	            mIcon11 = BitmapFactory.decodeStream(in);
	        } catch (Exception e) {
	            Log.e("Error", e.getMessage());
	            e.printStackTrace();
	        }
	        return mIcon11;
	    }

	    protected void onPostExecute(Bitmap result) {
	        bmImage.setImageBitmap(result);
	    }
	}

}
